let hall_yh_service = {
    // 初始化影院列表
    created: function () {
        this.findHallAll(1, 6);
    },

    // 改变操作卡片
    changeOperateCard: function (card, hallId) {
        if (card == 'update' || card == 'detail') {
            this.findHallById(hallId);
        }
        this.operateCard = card;
    },

    // 监听卡片的变化
    watchCard: function (newMode, oldMode) {
        if (newMode == 'add' || newMode == 'update' || newMode == 'detail') {
            // 初始化影厅的所有类型
            this.findHallTypeAll();
            // 初始化所有的影院信息
            this.findCinemaAll();
        }
        if (newMode == "index") {
            // 重新加载页面数据
            this.findHallAll(1, 6);
            // 初始化影厅的布局参数
            this.initLayoutData();
        }
    },

    // 初始化影厅的布局参数
    initLayoutData: function() {
        this.layout.columnTotal = 0;
        this.layout.seatTotal = 1;
        this.layout.checkSeat = {};
        this.layout.checkSeatIndexs = [];
        this.layout.adjustColumnIndex = [];
        this.hall.hallCapacity = 0;
    },

    // 选中座位
    checkSeat: function (columnIndex, rowIndex) {
        // 组成一个标记座位信息的'key' 如：'2~5'表示第二排第五列
        var key = columnIndex + '~' + rowIndex
        // 如果key属性不存在，就添加标记；如果存在就移除掉
        if (this.layout.checkSeat[key] == undefined) {
            // 标记
            this.layout.checkSeat[key] = 'check';
            // 将标记的索引记录到数组
            this.layout.checkSeatIndexs.push(key);
        } else {
            // 移除标记
            delete this.layout.checkSeat[key];
            // 获取所有选中的索引并更新到列表
            this.layout.checkSeatIndexs = Object.keys(this.layout.checkSeat);;
        }
    },

    // 重置位置信息
    resetSeat: function() {
        this.layout.checkSeat = {};
        this.layout.checkSeatIndexs = [];
    },

    // 微调当前行的座位数（默认是+1处理，为了使每行的座位数可以在单复数间自由变动）
    adjustSeat: function(element) {
        var checked = element.checked;
        var columnIndex = parseInt(element.value);
        if (checked) {
            this.layout.adjustColumnIndex.push(columnIndex)
        } else {
            // 清空微调索引集
            this.layout.adjustColumnIndex = [];
            // 获取所有选中复选框的值并添加到索引列表
            var checkboxList = document.getElementsByName("checkbox");
            for (i=0; i<checkboxList.length; i++) {
                if (checkboxList[i].checked) {
                    var columnIndex = parseInt(checkboxList[i].value);
                    this.layout.adjustColumnIndex.push(columnIndex)
                }
            }
        }
    },

    // 计算影厅的布局信息
    calculateLayout: function() {
        for (i=1; i<=this.layout.columnTotal; i++) {
            var layout = {};
            // 处理座位的排号
            layout["seatColumnId"] = i;
            // 处理当前排所有座位的状态
            var seatStateList = [];
            for (n=1; n<=this.layout.seatTotal; n++) {
                // 组成一个标记座位信息的'key' 如：'2~5'表示第二排第五列
                var key = i + '~' + n;
                if (this.layout.checkSeatIndexs.includes(key)) {
                    seatStateList.push(0);
                }else {
                    seatStateList.push(2);
                    this.hall.hallCapacity ++;
                }
            }
            // 处理微调的座位，如果有的话
            if (this.layout.adjustColumnIndex.includes(i)) {
                // 组成一个标记座位信息的'key' 如：'2~5'表示第二排第五列
                var key = i + '~' + (layout.seatTotal+1);
                if (this.layout.checkSeatIndexs.includes(key)) {
                    seatStateList.push(0);
                }else {
                    seatStateList.push(2);
                    this.hall.hallCapacity ++;
                }
            }
            layout["seatStateIds"] = seatStateList;
            this.hall.layout.push(layout)
        }
    },

    // 分页功能 改变下拉框中每页的记录数时触发
    handleSizeChange: function (val) {
        // 重新搜索
        this.findHallAll(this.page.pageNum, val);
    },
    // 分页功能 点击导航按钮时触发
    handleCurrentChange: function (val) {
        // 重新搜索
        this.findHallAll(val, this.page.pageSize);
    },
}